<?php
namespace Ipartek\PruebaBundle\DataFixtures\ORM;

use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Ipartek\PruebaBundle\Entity\Curso;

/**
 * Fixtures de la entidad Curso.
 * Crea 10 cursos de prueba para poder probar la aplicación.
 */
class Cursos extends AbstractFixture implements OrderedFixtureInterface
{
	
	public function getOrder()
	{
		return 1;
	}
	
	public function load(ObjectManager $manager)
	{
		for ($i=1; $i<=10; $i++) {
			$curso = new Curso();
			
			$curso->setNombre($this->getNombre());
			$curso->setDescripcion($this->getDescripcion());
			$curso->setMaxAlumnos(rand(5, 20));
			
			$ndias=rand(1, 50);
			$curso->setHorasDuracion($ndias*8);
			
			$data=$this->getFechaIni();			
			$curso->setFechaIni($data);						
			$curso->setFechaFin($data->modify('+'.$ndias.' days'));	
			
			$manager->persist($curso);
		}
		
		$manager->flush();
	}
	
	/**
	 * Generador aleatorio de nombres de cursos
	 *
	 * @return string Nombre aleatorio generado para el curso.
	 */
	private function getNombre()
	{
		$palabras = array_flip(array(
				'Lorem', 'Ipsum', 'Sitamet', 'Et', 'At', 'Sed', 'Aut', 'Vel', 'Ut',
				'Dum', 'Tincidunt', 'Facilisis', 'Nulla', 'Scelerisque', 'Blandit',
				'Ligula', 'Eget', 'Drerit', 'Malesuada', 'Enimsit', 'Libero',
				'Penatibus', 'Imperdiet', 'Pendisse', 'Vulputae', 'Natoque',
				'Aliquam', 'Dapibus', 'Lacinia'
		));
	
		$numeroPalabras = rand(3, 6);
	
		return implode(' ', array_rand($palabras, $numeroPalabras));
	}

	/**
	 * Generador aleatorio de descripciones de cursos
	 *
	 * @return  string Descripci�n aleatoria generada.
	 */
	private function getDescripcion()
	{
		$descripcion = '';
	
		$frases = array_flip(array(
				'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
				'Mauris ultricies nunc nec sapien tincidunt facilisis.',
				'Nulla scelerisque blandit ligula eget hendrerit.',
				'Sed malesuada, enim sit amet ultricies semper, elit leo lacinia massa, in tempus nisl ipsum quis libero.',
				'Aliquam molestie neque non augue molestie bibendum.',
				'Pellentesque ultricies erat ac lorem pharetra vulputate.',
				'Donec dapibus blandit odio, in auctor turpis commodo ut.',
				'Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.',
				'Nam rhoncus lorem sed libero hendrerit accumsan.',
				'Maecenas non erat eu justo rutrum condimentum.',
				'Suspendisse leo tortor, tempus in lacinia sit amet, varius eu urna.',
				'Phasellus eu leo tellus, et accumsan libero.',
				'Pellentesque fringilla ipsum nec justo tempus elementum.',
				'Aliquam dapibus metus aliquam ante lacinia blandit.',
				'Donec ornare lacus vitae dolor imperdiet vitae ultricies nibh congue.',
		));
	
		$numeroFrases = rand(3, 6);
	
		return implode(' ', array_rand($frases, $numeroFrases));
	}
	
	/**
	 * Generador aleatorio de fechas inicio
	 *
	 * @return \DateTime FechaIni aleatoria generada para el curso.
	 */
	private function getFechaIni()
	{
		$dt = new \DateTime("now");
		$dt = $dt->modify('+'.rand(1, 12).' month');
		
		return $dt;
	}	
}